#https://www.luogu.com.cn/problem/P1098


ORIGINAL_ORDER=1
INVERSE_ORDER =2

s="123"

# 参数p_1展开方式
# p_1=1时，对于字母子串，填充小写字母；
# p_1=2时，对于字母子串，填充大写字母。这两种情况下数字子串的填充方式相同。
# p_1=3时，不论是字母子串还是数字字串，都用与要填充的字母个数相同的星号“*”来填充。
# (3) 参数p_2填充字符的重复个数。p_2=k表示同一个字符要连续填充k个
# (4) 参数p_3是否改为逆序：p3=1表示维持原来顺序，表示采用逆序输出
# (5) 如果减号右边的字符恰好是左边字符的后继，只删除中间的减号，例如：“d-e”应输出为“de”，
class Integer
	def is_in_num?
		return self>='0'.to_i && self<='9'.to_i
	end
	def is_alpha?
		return (self>='a'.to_i &&  self<='Z'.to_i) || (self>='A'.to_i && self<='Z'.to_i)
	end
end



class String 
	def wang_unfold(p1,p2,p3) 
		res=""
		substrs=self.split(pattern='-')
		puts substrs
		i=0
		while i < length-2
			former=substrs[i]
			latter=substrs[i+1]
			res+=former
			b=former[-1].to_i
			e=latter[0].to_i

			if b.is_alpha? &&e.is_alpha?
				case p1 
				when 1 #p_1=1时，对于字母子串，填充小写字母；
					temp=""
					for iter in b+1..e 
						temp+=iter.to_s * p2
					end
					temp=temp.downcase
				when 2 #p_1=2时，对于字母子串，填充大写字母。这两种情况下数字子串的填充方式相同。
					temp=""
					for iter in b+1..e 
						temp+=iter.to_s * p2 
					end
					temp=temp.upcase
				when 3 #p_1=3时，不论是字母子串还是数字字串，都用与要填充的字母个数相同的星号“*”来填充。
					temp="*" *(e-b-1)
				end
			elsif b.is_in_num? && e.is_in_num?
				if p1!=3 
					temp=""
					for iter in b+1..e 
						 temp+=iter.to_s * p2 
					end
				else #p_1=3时，不论是字母子串还是数字字串，都用与要填充的字母个数相同的星号“*”来填充。
					temp="*" *(e-b-1)
				end
			else
				res+='-'
			end
			if(p3==ORIGINAL_ORDER)
				res+=temp
			else
				res+=temp.reverse
			end
			res+=latter
			i+=1
		end
		return res
	end
end



puts "1-9".wang_unfold(1,2,1)

